#pragma once
#include "../../abstract_picture.h"

class TPicture;

namespace Commands
{
    class DiasPicture : public AbstractPicture
    {
    public:
        static const int SUBLAYERS_COUNT = 50;
    
        DiasPicture();
    
        DiasPicture(const char* path, int x, int y,  int L, int id);

        virtual ~DiasPicture();
    
        void SetL(const int majorLayer, const int minorLayer);
    
        void SetL(const int majorLayer);
    
        void SetId(const int minorLayer);
    
        virtual void SetX(const float x);
    
        virtual void SetY(const float y);
    
        virtual void SetXY(const float x, const float y);
    
        virtual void SetZOrder(const int order);
    
        virtual void SetFlip(const IGraphicElement::Flip flip);
    
        virtual void SetAngle(const float angle);
    
        virtual void SetScale(const float scale);
    
        virtual void SetXScale(const float scale);
    
        virtual void SetYScale(const float scale);
    
        virtual void SetAlpha(const float alpha);
    
        virtual void SetXAnchor(const float anchor);
    
        virtual void SetYAnchor(const float anchor);
    
        virtual void Show(void);
    
        virtual void Hide(void);
    
        virtual float GetWidth(void) const;
    
        virtual float GetHeight(void) const;

        void Load(const char* path);

        void SetCropOffset(const int original_width, const int original_height, const int x_offset, const int y_offset);

    private:
        int AccordinglyXDisplacement(void);
        int AccordinglyYDisplacement(void);

        TPicture* picture;
    
        int original_width;
        int original_height;
        int x_offset;
        int y_offset;
        int x_flip_coord;
        int y_flip_coord;
    };
}//namespace
